DockerコンテナのベースイメージをAmazon Linux AMIからAmazon Linux 2に変更する

DockerコンテナのベースイメージをAmazon Linux AMIからAmazon Linux 2に変更する

Clock Icon2020.04.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、CX事業本部の若槻です。

開発用のDockerコンテナでベースイメージとして利用しているAmazon Linux AMIAmazon Linux 2に変更する機会があったので、その際行った対応をご紹介します。

なぜAmazon Linux 2に変更するのか

下記の既報の通り、Amazon Linux AMI(2018.03) の最新バージョンは2020年12月31日にセキュリティアップデートが終了します。

よくある質問 でも申し上げたとおり、Amazon Linux AMI (2018.03) の最新バージョンは 2020 年 6 月 30 日にセキュリティアップデートの提供が終了します。お客様のご要望もあって、終了期日を延長し、メンテナンスサポート期間を設けます。

終了期日の延長 Amazon Linux AMI は 2020 年 12 月 31 日まで延長され、引き続きセキュリティアップデートおよびパッケージの更新版を必要に応じて提供することになりました。

よってAmazon Linux AMIを利用している環境がある場合は、サポート期間が終了する前にAmazon Linux 2にアップデートするなどの対応を行うべきですが、これはDockerコンテナのイメージでAmazon Linux AMIを利用している場合も同様となります。

そして私が対応している案件でも、開発用のDockerコンテナを起動するDockerfileで以下のようにベースイメージとしてAmazon Linux AMI(2018.03.0.20191219.0)を指定していたため、この指定をAmazon Linux 2に変更する対応を行うことになりました。

  • Dockerfile
FROM amazonlinux:2018.03.0.20191219.0

(中略)

Amazon Linux 2のどのイメージを使えばいいのか

単にAmazon Linux 2にイメージを変更するといっても、後述する"Amazon Linux公式リポジトリ"にはバージョンや対応アーキテクチャなどの異なるイメージが公開されています。よってまずは公開されているうちのどのAmazon Linux 2イメージを使えばいいのかを検討してみます。

AWS Lambdaで実際に使われているイメージを確認してみる

今回ベースイメージを変更する開発用のDockerコンテナですが、具体的な用途としては「AWS Lambdaにデプロイするpipパッケージを事前にローカル上でインストールしてパッケージ化するため」というのがありました。なので変更するイメージは可能であればLambdaの環境として使われているのと同じか近しいイメージが望ましいです。

この部分については以下のページが参考になりました。

このページのうち、Amazon Linux 2が利用されているランタイムの仕様の記載(赤枠部分)を見てみると、

  • 「イメージ」はカスタムとだけあり、具体的にどのDockerイメージが使われているかの情報はなし
  • 「Linuxカーネル」は4.14.138-99.102.amzn2.x86_64とあり、つまりx64のアーキテクチャー上で動いている

でした。よって今回は、

  • 新し過ぎもせず古過ぎもしないバージョンである(枯れている)
  • x64アーキテクチャに対応している

という条件に見合うAmazon Linux 2イメージに変更する方針としました。

Docker HubのAmazon Linux公式リポジトリからタグを選んでみる

以下がAmazon Linuxのイメージが公開されているDocker HubのAmazon Linux公式リポジトリのTOPページとなります。

まず[Description]タブの[Supported tags and respective Dockerfile links]欄(上記赤枠部分)を見ると、Amazon Linux公式リポジトリでサポートされている最新のイメージのタグが示されています。この部分の記載から、2020年4月時点ではlatestタグがエイリアスとなっている2.0.20200304.0タグがAmazon Linux 2の最新バージョンのイメージであることが分かります。

次に[Tags]タブを開きます。ここではAmazon Linuxリポジトリで公開されているタグの一覧を確認できます。

このうちAmazon Linux 2イメージのタグはリリース時期が新しいものだと以下のバージョンが利用可能でした。

  • 2.0.20200304.0
  • 2.0.20200207.1
  • 2.0.20191217.0
  • 2.0.20191016.0

これらの中で適度に枯れており、x64アーキテクチャ(amd64)に対応もしている2.0.20191217.0タグを今回は利用することとしました。 image.png

よって、Dockerfileの記述を以下のように変更する対応を行いました。

FROM amazonlinux:2.0.20191217.0

(中略)

おわりに

DockerコンテナのベースイメージをAmazon Linux AMIからAmazon Linux 2に変更した際の対応についてご紹介しました。

記事中ではさらっと流していますが、どのイメージ(タグ)に変更するかを検討する上で、Dockerの"タグとイメージの関係"や"マルチアーキテクチャイメージ"についてもかなり調べるはめになったのですが、今回の記事には収まりきらなかったため、以下の記事に別トピックとして切り出しています。参考までにどうぞ。

以上

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.